home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 January / enter-2004-01.iso / files / maxima-5.9.0.exe / {app} / share / maxima / 5.9.0 / src / numerical / slatec / zbinu.lisp < prev    next >
Encoding:
Text File  |  2003-02-09  |  5.2 KB  |  141 lines

  1. ;;; Compiled by f2cl version 2.0 beta 2002-05-06
  2. ;;; 
  3. ;;; Options: ((:prune-labels nil) (:auto-save t) (:relaxed-array-decls t)
  4. ;;;           (:coerce-assigns :as-needed) (:array-type ':simple-array)
  5. ;;;           (:array-slicing nil) (:declare-common nil)
  6. ;;;           (:float-format double-float))
  7.  
  8. (in-package "SLATEC")
  9.  
  10.  
  11. (let ((zeror 0.0) (zeroi 0.0))
  12.   (declare (type double-float zeroi zeror))
  13.   (defun zbinu (zr zi fnu kode n cyr cyi nz rl fnul tol elim alim)
  14.     (declare (type (simple-array double-float (*)) cyr cyi)
  15.              (type f2cl-lib:integer4 kode n nz)
  16.              (type double-float zr zi fnu rl fnul tol elim alim))
  17.     (prog ((cwr (make-array 2 :element-type 'double-float))
  18.            (cwi (make-array 2 :element-type 'double-float)) (i 0) (inw 0)
  19.            (nlast 0) (nn 0) (nui 0) (nw 0) (az 0.0) (dfnu 0.0))
  20.       (declare (type (simple-array double-float (2)) cwr cwi)
  21.                (type double-float dfnu az)
  22.                (type f2cl-lib:integer4 nw nui nn nlast inw i))
  23.       (setf nz 0)
  24.       (setf az (zabs zr zi))
  25.       (setf nn n)
  26.       (setf dfnu (+ fnu (f2cl-lib:int-sub n 1)))
  27.       (if (<= az 2.0) (go label10))
  28.       (if (> (* az az 0.25) (+ dfnu 1.0)) (go label20))
  29.      label10
  30.       (multiple-value-bind
  31.           (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9 var-10)
  32.           (zseri zr zi fnu kode nn cyr cyi nw tol elim alim)
  33.         (declare
  34.          (ignore var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-8 var-9 var-10))
  35.         (setf nw var-7))
  36.       (setf inw (f2cl-lib:int (abs nw)))
  37.       (setf nz (f2cl-lib:int-add nz inw))
  38.       (setf nn (f2cl-lib:int-sub nn inw))
  39.       (if (= nn 0) (go end_label))
  40.       (if (>= nw 0) (go label120))
  41.       (setf dfnu (+ fnu (f2cl-lib:int-sub nn 1)))
  42.      label20
  43.       (if (< az rl) (go label40))
  44.       (if (<= dfnu 1.0) (go label30))
  45.       (if (< (+ az az) (* dfnu dfnu)) (go label50))
  46.      label30
  47.       (multiple-value-bind
  48.           (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9 var-10
  49.            var-11)
  50.           (zasyi zr zi fnu kode nn cyr cyi nw rl tol elim alim)
  51.         (declare
  52.          (ignore var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-8 var-9 var-10
  53.           var-11))
  54.         (setf nw var-7))
  55.       (if (< nw 0) (go label130))
  56.       (go label120)
  57.      label40
  58.       (if (<= dfnu 1.0) (go label70))
  59.      label50
  60.       (multiple-value-bind
  61.           (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9 var-10
  62.            var-11)
  63.           (zuoik zr zi fnu kode 1 nn cyr cyi nw tol elim alim)
  64.         (declare
  65.          (ignore var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-9 var-10
  66.           var-11))
  67.         (setf nw var-8))
  68.       (if (< nw 0) (go label130))
  69.       (setf nz (f2cl-lib:int-add nz nw))
  70.       (setf nn (f2cl-lib:int-sub nn nw))
  71.       (if (= nn 0) (go end_label))
  72.       (setf dfnu (+ fnu (f2cl-lib:int-sub nn 1)))
  73.       (if (> dfnu fnul) (go label110))
  74.       (if (> az fnul) (go label110))
  75.      label60
  76.       (if (> az rl) (go label80))
  77.      label70
  78.       (multiple-value-bind
  79.           (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8)
  80.           (zmlri zr zi fnu kode nn cyr cyi nw tol)
  81.         (declare (ignore var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-8))
  82.         (setf nw var-7))
  83.       (if (< nw 0) (go label130))
  84.       (go label120)
  85.      label80
  86.       (multiple-value-bind
  87.           (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9 var-10
  88.            var-11)
  89.           (zuoik zr zi fnu kode 2 2 cwr cwi nw tol elim alim)
  90.         (declare
  91.          (ignore var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-9 var-10
  92.           var-11))
  93.         (setf nw var-8))
  94.       (if (>= nw 0) (go label100))
  95.       (setf nz nn)
  96.       (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1))
  97.                     ((> i nn) nil)
  98.         (tagbody
  99.           (f2cl-lib:fset (f2cl-lib:fref cyr (i) ((1 n))) zeror)
  100.           (f2cl-lib:fset (f2cl-lib:fref cyi (i) ((1 n))) zeroi)
  101.          label90))
  102.       (go end_label)
  103.      label100
  104.       (if (> nw 0) (go label130))
  105.       (multiple-value-bind
  106.           (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9 var-10
  107.            var-11 var-12)
  108.           (zwrsk zr zi fnu kode nn cyr cyi nw cwr cwi tol elim alim)
  109.         (declare
  110.          (ignore var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-8 var-9 var-10
  111.           var-11 var-12))
  112.         (setf nw var-7))
  113.       (if (< nw 0) (go label130))
  114.       (go label120)
  115.      label110
  116.       (setf nui (f2cl-lib:int (+ (- fnul dfnu) 1)))
  117.       (setf nui (max (the f2cl-lib:integer4 nui) (the f2cl-lib:integer4 0)))
  118.       (multiple-value-bind
  119.           (var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-7 var-8 var-9 var-10
  120.            var-11 var-12 var-13)
  121.           (zbuni zr zi fnu kode nn cyr cyi nw nui nlast fnul tol elim alim)
  122.         (declare
  123.          (ignore var-0 var-1 var-2 var-3 var-4 var-5 var-6 var-8 var-10 var-11
  124.           var-12 var-13))
  125.         (setf nw var-7)
  126.         (setf nlast var-9))
  127.       (if (< nw 0) (go label130))
  128.       (setf nz (f2cl-lib:int-add nz nw))
  129.       (if (= nlast 0) (go label120))
  130.       (setf nn nlast)
  131.       (go label60)
  132.      label120
  133.       (go end_label)
  134.      label130
  135.       (setf nz -1)
  136.       (if (= nw -2) (setf nz -2))
  137.       (go end_label)
  138.      end_label
  139.       (return (values nil nil nil nil nil nil nil nz nil nil nil nil nil)))))
  140.  
  141.